﻿using System;
using System.Collections.Generic;
using System.Text;

namespace vJine.Core.ORM.Adapters {
    public partial class MSSQL : IDbAdapter<MSSQL> {
        static List<string> _KeyWords = new List<string>();
        /// <summary>
        /// http://msdn.microsoft.com/en-us/library/ms189822.aspx
        /// </summary>
        static void Init_Keywords() {
            _KeyWords.Add("DEC");
            _KeyWords.Add("ABSOLUTE");
            _KeyWords.Add("ACTION");
            _KeyWords.Add("ADA");
            _KeyWords.Add("ADD");
            _KeyWords.Add("ADMIN");
            _KeyWords.Add("AFTER");
            _KeyWords.Add("AGGREGATE");
            _KeyWords.Add("ALIAS");
            _KeyWords.Add("ALL");
            _KeyWords.Add("ALLOCATE");
            _KeyWords.Add("ALTER");
            _KeyWords.Add("AND");
            _KeyWords.Add("ANY");
            _KeyWords.Add("ARE");
            _KeyWords.Add("ARRAY");
            _KeyWords.Add("AS");
            _KeyWords.Add("ASC");
            _KeyWords.Add("ASENSITIVE");
            _KeyWords.Add("ASSERTION");
            _KeyWords.Add("ASYMMETRIC");
            _KeyWords.Add("AT");
            _KeyWords.Add("ATOMIC");
            _KeyWords.Add("AUTHORIZATION");
            _KeyWords.Add("AVG");
            _KeyWords.Add("BACKUP");
            _KeyWords.Add("BEFORE");
            _KeyWords.Add("BEGIN");
            _KeyWords.Add("BETWEEN");
            _KeyWords.Add("BINARY");
            _KeyWords.Add("BIT");
            _KeyWords.Add("BIT_LENGTH");
            _KeyWords.Add("BLOB");
            _KeyWords.Add("BOOLEAN");
            _KeyWords.Add("BOTH");
            _KeyWords.Add("BREADTH");
            _KeyWords.Add("BREAK");
            _KeyWords.Add("BROWSE");
            _KeyWords.Add("BULK");
            _KeyWords.Add("BY");
            _KeyWords.Add("CALL");
            _KeyWords.Add("CALLED");
            _KeyWords.Add("CARDINALITY");
            _KeyWords.Add("CASCADE");
            _KeyWords.Add("CASCADED");
            _KeyWords.Add("CASE");
            _KeyWords.Add("CAST");
            _KeyWords.Add("CATALOG");
            _KeyWords.Add("CHAR");
            _KeyWords.Add("CHAR_LENGTH");
            _KeyWords.Add("CHARACTER");
            _KeyWords.Add("CHARACTER_LENGTH");
            _KeyWords.Add("CHECK");
            _KeyWords.Add("CHECKPOINT");
            _KeyWords.Add("CLASS");
            _KeyWords.Add("CLOB");
            _KeyWords.Add("CLOSE");
            _KeyWords.Add("CLUSTERED");
            _KeyWords.Add("COALESCE");
            _KeyWords.Add("COLLATE");
            _KeyWords.Add("COLLATION");
            _KeyWords.Add("COLLECT");
            _KeyWords.Add("COLUMN");
            _KeyWords.Add("COMMIT");
            _KeyWords.Add("COMPLETION");
            _KeyWords.Add("COMPUTE");
            _KeyWords.Add("CONDITION");
            _KeyWords.Add("CONNECT");
            _KeyWords.Add("CONNECTION");
            _KeyWords.Add("CONSTRAINT");
            _KeyWords.Add("CONSTRAINTS");
            _KeyWords.Add("CONSTRUCTOR");
            _KeyWords.Add("CONTAINS");
            _KeyWords.Add("CONTAINSTABLE");
            _KeyWords.Add("CONTINUE");
            _KeyWords.Add("CONVERT");
            _KeyWords.Add("CORR");
            _KeyWords.Add("CORRESPONDING");
            _KeyWords.Add("COUNT");
            _KeyWords.Add("COVAR_POP");
            _KeyWords.Add("COVAR_SAMP");
            _KeyWords.Add("CREATE");
            _KeyWords.Add("CROSS");
            _KeyWords.Add("CUBE");
            _KeyWords.Add("CUME_DIST");
            _KeyWords.Add("CURRENT");
            _KeyWords.Add("CURRENT_CATALOG");
            _KeyWords.Add("CURRENT_DATE");
            _KeyWords.Add("CURRENT_DEFAULT_TRANSFORM_GROUP");
            _KeyWords.Add("CURRENT_PATH");
            _KeyWords.Add("CURRENT_ROLE");
            _KeyWords.Add("CURRENT_SCHEMA");
            _KeyWords.Add("CURRENT_TIME");
            _KeyWords.Add("CURRENT_TIMESTAMP");
            _KeyWords.Add("CURRENT_TRANSFORM_GROUP_FOR_TYPE");
            _KeyWords.Add("CURRENT_USER");
            _KeyWords.Add("CURSOR");
            _KeyWords.Add("CYCLE");
            _KeyWords.Add("DATA");
            _KeyWords.Add("DATABASE");
            _KeyWords.Add("DATE");
            _KeyWords.Add("DAY");
            _KeyWords.Add("DBCC");
            _KeyWords.Add("DEALLOCATE");
            _KeyWords.Add("DECIMAL");
            _KeyWords.Add("DECLARE");
            _KeyWords.Add("DEFAULT");
            _KeyWords.Add("DEFERRABLE");
            _KeyWords.Add("DEFERRED");
            _KeyWords.Add("DELETE");
            _KeyWords.Add("DENY");
            _KeyWords.Add("DEPTH");
            _KeyWords.Add("DEREF");
            _KeyWords.Add("DESC");
            _KeyWords.Add("DESCRIBE");
            _KeyWords.Add("DESCRIPTOR");
            _KeyWords.Add("DESTROY");
            _KeyWords.Add("DESTRUCTOR");
            _KeyWords.Add("DETERMINISTIC");
            _KeyWords.Add("DIAGNOSTICS");
            _KeyWords.Add("DICTIONARY");
            _KeyWords.Add("DISCONNECT");
            _KeyWords.Add("DISK");
            _KeyWords.Add("DISTINCT");
            _KeyWords.Add("DISTRIBUTED");
            _KeyWords.Add("DOMAIN");
            _KeyWords.Add("DOUBLE");
            _KeyWords.Add("DROP");
            _KeyWords.Add("DUMP");
            _KeyWords.Add("DYNAMIC");
            _KeyWords.Add("EACH");
            _KeyWords.Add("ELEMENT");
            _KeyWords.Add("ELSE");
            _KeyWords.Add("END");
            _KeyWords.Add("END-EXEC");
            _KeyWords.Add("EQUALS");
            _KeyWords.Add("ERRLVL");
            _KeyWords.Add("ESCAPE");
            _KeyWords.Add("EVERY");
            _KeyWords.Add("EXCEPT");
            _KeyWords.Add("EXCEPTION");
            _KeyWords.Add("EXEC");
            _KeyWords.Add("EXECUTE");
            _KeyWords.Add("EXISTS");
            _KeyWords.Add("EXIT");
            _KeyWords.Add("EXTERNAL");
            _KeyWords.Add("EXTRACT");
            _KeyWords.Add("FETCH");
            _KeyWords.Add("FILE");
            _KeyWords.Add("FILLFACTOR");
            _KeyWords.Add("FILTER");
            _KeyWords.Add("FIRST");
            _KeyWords.Add("FLOAT");
            _KeyWords.Add("FOR");
            _KeyWords.Add("FOREIGN");
            _KeyWords.Add("FORTRAN");
            _KeyWords.Add("FOUND");
            _KeyWords.Add("FREE");
            _KeyWords.Add("FREETEXT");
            _KeyWords.Add("FREETEXTTABLE");
            _KeyWords.Add("FROM");
            _KeyWords.Add("FULL");
            _KeyWords.Add("FULLTEXTTABLE");
            _KeyWords.Add("FUNCTION");
            _KeyWords.Add("FUSION");
            _KeyWords.Add("GENERAL");
            _KeyWords.Add("GET");
            _KeyWords.Add("GLOBAL");
            _KeyWords.Add("GO");
            _KeyWords.Add("GOTO");
            _KeyWords.Add("GRANT");
            _KeyWords.Add("GROUP");
            _KeyWords.Add("GROUPING");
            _KeyWords.Add("HAVING");
            _KeyWords.Add("HOLD");
            _KeyWords.Add("HOLDLOCK");
            _KeyWords.Add("HOST");
            _KeyWords.Add("HOUR");
            _KeyWords.Add("IDENTITY");
            _KeyWords.Add("IDENTITY_INSERT");
            _KeyWords.Add("IDENTITYCOL");
            _KeyWords.Add("IF");
            _KeyWords.Add("IGNORE");
            _KeyWords.Add("IMMEDIATE");
            _KeyWords.Add("IN");
            _KeyWords.Add("INCLUDE");
            _KeyWords.Add("INDEX");
            _KeyWords.Add("INDICATOR");
            _KeyWords.Add("INITIALIZE");
            _KeyWords.Add("INITIALLY");
            _KeyWords.Add("INNER");
            _KeyWords.Add("INOUT");
            _KeyWords.Add("INPUT");
            _KeyWords.Add("INSENSITIVE");
            _KeyWords.Add("INSERT");
            _KeyWords.Add("INT");
            _KeyWords.Add("INTEGER");
            _KeyWords.Add("INTERSECT");
            _KeyWords.Add("INTERSECTION");
            _KeyWords.Add("INTERVAL");
            _KeyWords.Add("INTO");
            _KeyWords.Add("IS");
            _KeyWords.Add("ISOLATION");
            _KeyWords.Add("ITERATE");
            _KeyWords.Add("JOIN");
            _KeyWords.Add("KEY");
            _KeyWords.Add("KILL");
            _KeyWords.Add("LANGUAGE");
            _KeyWords.Add("LARGE");
            _KeyWords.Add("LAST");
            _KeyWords.Add("LATERAL");
            _KeyWords.Add("LEADING");
            _KeyWords.Add("LEFT");
            _KeyWords.Add("LESS");
            _KeyWords.Add("LEVEL");
            _KeyWords.Add("LIKE");
            _KeyWords.Add("LIKE_REGEX");
            _KeyWords.Add("LIMIT");
            _KeyWords.Add("LINENO");
            _KeyWords.Add("LN");
            _KeyWords.Add("LOAD");
            _KeyWords.Add("LOCAL");
            _KeyWords.Add("LOCALTIME");
            _KeyWords.Add("LOCALTIMESTAMP");
            _KeyWords.Add("LOCATOR");
            _KeyWords.Add("LOWER");
            _KeyWords.Add("MAP");
            _KeyWords.Add("MATCH");
            _KeyWords.Add("MAX");
            _KeyWords.Add("MEMBER");
            _KeyWords.Add("MERGE");
            _KeyWords.Add("METHOD");
            _KeyWords.Add("MIN");
            _KeyWords.Add("MINUTE");
            _KeyWords.Add("MOD");
            _KeyWords.Add("MODIFIES");
            _KeyWords.Add("MODIFY");
            _KeyWords.Add("MODULE");
            _KeyWords.Add("MONTH");
            _KeyWords.Add("MULTISET");
            _KeyWords.Add("NAMES");
            _KeyWords.Add("NATIONAL");
            _KeyWords.Add("NATURAL");
            _KeyWords.Add("NCHAR");
            _KeyWords.Add("NCLOB");
            _KeyWords.Add("NEW");
            _KeyWords.Add("NEXT");
            _KeyWords.Add("NO");
            _KeyWords.Add("NOCHECK");
            _KeyWords.Add("NONCLUSTERED");
            _KeyWords.Add("NONE");
            _KeyWords.Add("NORMALIZE");
            _KeyWords.Add("NOT");
            _KeyWords.Add("NULL");
            _KeyWords.Add("NULLIF");
            _KeyWords.Add("NUMERIC");
            _KeyWords.Add("OBJECT");
            _KeyWords.Add("OCCURRENCES_REGEX");
            _KeyWords.Add("OCTET_LENGTH");
            _KeyWords.Add("OF");
            _KeyWords.Add("OFF");
            _KeyWords.Add("OFFSETS");
            _KeyWords.Add("OLD");
            _KeyWords.Add("ON");
            _KeyWords.Add("ONLY");
            _KeyWords.Add("OPEN");
            _KeyWords.Add("OPENDATASOURCE");
            _KeyWords.Add("OPENQUERY");
            _KeyWords.Add("OPENROWSET");
            _KeyWords.Add("OPENXML");
            _KeyWords.Add("OPERATION");
            _KeyWords.Add("OPTION");
            _KeyWords.Add("OR");
            _KeyWords.Add("ORDER");
            _KeyWords.Add("ORDINALITY");
            _KeyWords.Add("OUT");
            _KeyWords.Add("OUTER");
            _KeyWords.Add("OUTPUT");
            _KeyWords.Add("OVER");
            _KeyWords.Add("OVERLAY");
            _KeyWords.Add("PAD");
            _KeyWords.Add("PARAMETER");
            _KeyWords.Add("PARAMETERS");
            _KeyWords.Add("PARTIAL");
            _KeyWords.Add("PARTITION");
            _KeyWords.Add("PATH");
            _KeyWords.Add("PERCENT");
            _KeyWords.Add("PERCENT_RANK");
            _KeyWords.Add("PERCENTILE_CONT");
            _KeyWords.Add("PERCENTILE_DISC");
            _KeyWords.Add("PIVOT");
            _KeyWords.Add("PLAN");
            _KeyWords.Add("POSITION_REGEX");
            _KeyWords.Add("POSTFIX");
            _KeyWords.Add("PRECISION");
            _KeyWords.Add("PREFIX");
            _KeyWords.Add("PREORDER");
            _KeyWords.Add("PREPARE");
            _KeyWords.Add("PRESERVE");
            _KeyWords.Add("PRIMARY");
            _KeyWords.Add("PRINT");
            _KeyWords.Add("PRIOR");
            _KeyWords.Add("PRIVILEGES");
            _KeyWords.Add("PROC");
            _KeyWords.Add("PROCEDURE");
            _KeyWords.Add("PUBLIC");
            _KeyWords.Add("RAISERROR");
            _KeyWords.Add("RANGE");
            _KeyWords.Add("READ");
            _KeyWords.Add("READS");
            _KeyWords.Add("READTEXT");
            _KeyWords.Add("REAL");
            _KeyWords.Add("RECONFIGURE");
            _KeyWords.Add("RECURSIVE");
            _KeyWords.Add("REF");
            _KeyWords.Add("REFERENCES");
            _KeyWords.Add("REFERENCING");
            _KeyWords.Add("REGR_AVGX");
            _KeyWords.Add("REGR_AVGY");
            _KeyWords.Add("REGR_COUNT");
            _KeyWords.Add("REGR_INTERCEPT");
            _KeyWords.Add("REGR_R2");
            _KeyWords.Add("REGR_SLOPE");
            _KeyWords.Add("REGR_SXX");
            _KeyWords.Add("REGR_SXY");
            _KeyWords.Add("REGR_SYY");
            _KeyWords.Add("REPLICATION");
            _KeyWords.Add("RESTORE");
            _KeyWords.Add("RESTRICT");
            _KeyWords.Add("RETURN");
            _KeyWords.Add("REVERT");
            _KeyWords.Add("REVOKE");
            _KeyWords.Add("RIGHT");
            _KeyWords.Add("ROLLBACK");
            _KeyWords.Add("ROWCOUNT");
            _KeyWords.Add("ROWGUIDCOL");
            _KeyWords.Add("RULE");
            _KeyWords.Add("SAVE");
            _KeyWords.Add("SCHEMA");
            _KeyWords.Add("SCOPE");
            _KeyWords.Add("SEARCH");
            _KeyWords.Add("SECOND");
            _KeyWords.Add("SECTION");
            _KeyWords.Add("SECURITYAUDIT");
            _KeyWords.Add("SELECT");
            _KeyWords.Add("SEMANTICKEYPHRASETABLE");
            _KeyWords.Add("SEMANTICSIMILARITYDETAILSTABLE");
            _KeyWords.Add("SEMANTICSIMILARITYTABLE");
            _KeyWords.Add("SENSITIVE");
            _KeyWords.Add("SEQUENCE");
            _KeyWords.Add("SESSION");
            _KeyWords.Add("SESSION_USER");
            _KeyWords.Add("SET");
            _KeyWords.Add("SETS");
            _KeyWords.Add("SETUSER");
            _KeyWords.Add("SHUTDOWN");
            _KeyWords.Add("SIMILAR");
            _KeyWords.Add("SIZE");
            _KeyWords.Add("SMALLINT");
            _KeyWords.Add("SOME");
            _KeyWords.Add("SPACE");
            _KeyWords.Add("SPECIFIC");
            _KeyWords.Add("SPECIFICTYPE");
            _KeyWords.Add("SQL");
            _KeyWords.Add("SQLEXCEPTION");
            _KeyWords.Add("SQLSTATE");
            _KeyWords.Add("SQLWARNING");
            _KeyWords.Add("START");
            _KeyWords.Add("STATE");
            _KeyWords.Add("STATEMENT");
            _KeyWords.Add("STATIC");
            _KeyWords.Add("STATISTICS");
            _KeyWords.Add("STDDEV_POP");
            _KeyWords.Add("STDDEV_SAMP");
            _KeyWords.Add("STRUCTURE");
            _KeyWords.Add("SUBMULTISET");
            _KeyWords.Add("SUBSTRING_REGEX");
            _KeyWords.Add("SYMMETRIC");
            _KeyWords.Add("SYSTEM");
            _KeyWords.Add("SYSTEM_USER");
            _KeyWords.Add("TABLE");
            _KeyWords.Add("TABLESAMPLE");
            _KeyWords.Add("TEMPORARY");
            _KeyWords.Add("TERMINATE");
            _KeyWords.Add("TEXTSIZE");
            _KeyWords.Add("THAN");
            _KeyWords.Add("THEN");
            _KeyWords.Add("TIME");
            _KeyWords.Add("TIMESTAMP");
            _KeyWords.Add("TIMEZONE_HOUR");
            _KeyWords.Add("TIMEZONE_MINUTE");
            _KeyWords.Add("TO");
            _KeyWords.Add("TOP");
            _KeyWords.Add("TRAILING");
            _KeyWords.Add("TRAN");
            _KeyWords.Add("TRANSACTION");
            _KeyWords.Add("TRANSLATE_REGEX");
            _KeyWords.Add("TRANSLATION");
            _KeyWords.Add("TREAT");
            _KeyWords.Add("TRIGGER");
            _KeyWords.Add("TRUNCATE");
            _KeyWords.Add("TRY_CONVERT");
            _KeyWords.Add("TSEQUAL");
            _KeyWords.Add("UESCAPE");
            _KeyWords.Add("UNDER");
            _KeyWords.Add("UNION");
            _KeyWords.Add("UNIQUE");
            _KeyWords.Add("UNKNOWN");
            _KeyWords.Add("UNNEST");
            _KeyWords.Add("UNPIVOT");
            _KeyWords.Add("UPDATE");
            _KeyWords.Add("UPDATETEXT");
            _KeyWords.Add("USAGE");
            _KeyWords.Add("USE");
            _KeyWords.Add("USER");
            _KeyWords.Add("USING");
            _KeyWords.Add("VALUE");
            _KeyWords.Add("VALUES");
            _KeyWords.Add("VAR_POP");
            _KeyWords.Add("VAR_SAMP");
            _KeyWords.Add("VARCHAR");
            _KeyWords.Add("VARIABLE");
            _KeyWords.Add("VARYING");
            _KeyWords.Add("VIEW");
            _KeyWords.Add("WAITFOR");
            _KeyWords.Add("WHEN");
            _KeyWords.Add("WHENEVER");
            _KeyWords.Add("WHERE");
            _KeyWords.Add("WHILE");
            _KeyWords.Add("WIDTH_BUCKET");
            _KeyWords.Add("WINDOW");
            _KeyWords.Add("WITH");
            _KeyWords.Add("WITHIN");
            _KeyWords.Add("WITHIN GROUP");
            _KeyWords.Add("WITHOUT");
            _KeyWords.Add("WORK");
            _KeyWords.Add("WRITE");
            _KeyWords.Add("WRITETEXT");
            _KeyWords.Add("XMLAGG");
            _KeyWords.Add("XMLATTRIBUTES");
            _KeyWords.Add("XMLBINARY");
            _KeyWords.Add("XMLCAST");
            _KeyWords.Add("XMLCOMMENT");
            _KeyWords.Add("XMLCONCAT");
            _KeyWords.Add("XMLDOCUMENT");
            _KeyWords.Add("XMLELEMENT");
            _KeyWords.Add("XMLEXISTS");
            _KeyWords.Add("XMLFOREST");
            _KeyWords.Add("XMLITERATE");
            _KeyWords.Add("XMLNAMESPACES");
            _KeyWords.Add("XMLPARSE");
            _KeyWords.Add("XMLPI");
            _KeyWords.Add("XMLQUERY");
            _KeyWords.Add("XMLSERIALIZE");
            _KeyWords.Add("XMLTABLE");
            _KeyWords.Add("XMLTEXT");
            _KeyWords.Add("XMLVALIDATE");
            _KeyWords.Add("YEAR");
            _KeyWords.Add("ZONE");
            _KeyWords.Add("FALSE");
            _KeyWords.Add("TRUE");
        }
    }
}
